Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Алгоритмічна реалізація циклічного кодера та декодера. Створення Windows Forms програм
на основі Microsoft Visual Studio .NET
лабораторна робота № 2
з дисципліни “Основи збору, передачі та оброблення інформації”
Варіант № 4 група 3
Мета роботи: отримати навики по розробленню Windows Forms програм CLR за допомогою інструментарію Visual C++ 2005 та реалізувати циклічний кодер/декодер алгоритмічною мовою С++.
Завдання
Написати мовою С++ програму, що реалізує алгоритм роботи циклічного кодера та декодера для коду БЧХ, згідно варіанту завдання. Вигляд програми має відповідати рис. 5.1.
Функція кодування зчитує число у двійковому вигляді з вікна №1 (G_X () та виводить закодоване повідомлення у двійковому вигляді у вікно №2 (F_X). Параметри коду БЧХ задаються у середині програми. Відповідно до цих параметрів вибрати мінімальний по розміру беззнаковий цілий тип для закодованого повідомлення.
Функція декодування зчитує закодоване повідомлення у двійковому вигляді з вікна №2 (F_X), а з вікна №4 зчитує у двійковому виді маску з “1” у спотворюваних розрядах, за допомогою якої здійснює інверсію розрядів закодованого повідомлення F_X. Результат декодування виводить у вікно №3 (( G_X). Механізм виявлення та виправлення помилок реалізувати за допомогою алгоритму з циклічними зсувами. Усю необхідну додаткову інформацію виводити у широке інформаційне вікно.
На основі розробленої програми провести дослідження можливостей по виявленню та виправленню помилок для заданого твірного поліному БЧХ. Зняти 10 результатів виконання циклічного кодування-декодування при внесенні спотворень згідно таблиці 2.
№ п/п
Параметри циклічного коду БЧХ
13
n = 15; k = 5; s = 3; P(x) = 2467
без спотворень; 2) спотворився молодший розряд закодованого повідомлення F_X; 3) спотворився старший розряд; 4) спотворилися два молодших розряди; 5) спотворилися два старших розряди; 6-10 набори спотворень вибираються з таблиці згідно № 13 та № групи 3
6) 2,3,4,5; 7) 1,3,8; 8) 8, 9; 9) 4; 10) 12;
Циклічний кодер
Циклічні коди відносяться до числа блокових систематичних кодів, у яких кожна комбінація кодується самостійно (у вигляді блоку) таким чином, що інформаційні k та контрольні m символи (розряди) завжди знаходяться на визначених місцях. Назва кодів походить від їх циклічних властивостей: якщо – кодове слово циклічного коду, тоді , отримане циклічним зсувом елементів C, також є кодовим словом. Усі циклічні зсуви C, утворюють кодові слова. І, як результат циклічної властивості, ці коди володіють значною кількістю структурних зручностей, які можна використати при реалізації операцій кодування та декодування.
Можливість виявлення та виправлення практично будь-яких помилок при відносно малій надлишковості та простій реалізації, зробило ці коди широко розповсюдженими. Циклічні коди використовуються в безпровідній телефонії та у мобільному зв’язку.
Теорія циклічних кодів базується на теорії груп та алгебрі многочленів над полем Галуа. Поліном (многочлен), який можна представити у вигляді добутку поліномів нижчих степенів, називають звідним, в протилежному випадку незвідним. Поліноми у полі двійкових чисел називають незвідними, якщо вони діляться без остачі тільки на себе чи на одиницю. Незвідні поліноми можна записати у вигляді алгебричного поліному, або у вигляді двійкових чи десяткових чисел, наприклад
В основу циклічного кодування закладено використання незвідних поліномів , які для циклічних кодів називають твірними поліномами.
Найпростіший спосіб утворення циклічного коду полягає у множенні заданої кодової комбінації на твірний поліном . Недоліком такого підходу є те, що контрольні розряди m будуть розміщені у найрізноманітніших місцях кодової комбінації. Такий підхід вважається нераціональним, і тому використовується спосіб, який розміщує контрольні розряди після інформаційних
Метод побу...